В языке Rust сопоставление шаблонов — это не просто ветвь управления потоком выполнения, а сама архитектура привязки. Каждый раз, когда вы объявляете переменную или определяете функцию, вы занимаетесь сопоставлением шаблонов.
1. Идентичность привязки
Когда мы пишем let x = 5;, мы не просто присваиваем значение. Мы сопоставляем значение 5 с непротиворечивым шаблономx. Поскольку x — это имя, которое может представлять любое значение, сопоставление всегда удаётся и создаёт локальную привязку.
2. Параметры с шаблонами (Пример 18-6)
Возможно, наиболее глубокое понимание заключается в том, что подписи функций являются шаблонами. В сигнатуре fn foo(x: i32), код ожидает i32 и использует шаблон x для привязки входящего аргумента. Это означает, что каждый вход в функцию по сути является событием сопоставления с одним вариантом.
3. Всепроникающая природа шаблонов
Шаблоны распространяются дальше чем match. Они появляются в for циклах (разборе кортежей), while let условных выражениях, а также в if let выражениях. Эта Локальная привязка принцип гарантирует, что код на Rust остаётся последовательно выразительным, независимо от того, извлекаете ли вы данные из структуры или перебираете хеш-карту.